package com.ruoyi.lvlian.mapper;

import java.util.HashMap;
import java.util.List;

import com.ruoyi.lvlian.domain.OrderInfo;
import com.ruoyi.lvlian.domain.OrderTrackInfo;
import com.ruoyi.lvlian.dto.OrderInfoDto;
import com.ruoyi.lvlian.vo.OrderInfoVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 跟单信息Mapper接口
 *
 * @author liyuxi
 * @date 2024-06-06
 */
@Repository
public interface OrderInfoMapper {
    /**
     * 查询跟单信息
     *
     * @param id 跟单信息主键
     * @return 跟单信息
     */
    public OrderInfoVo selectOrderInfoById(String id);

    /**
     * 查询跟单信息列表
     *
     * @param orderInfo 跟单信息
     * @return 跟单信息集合
     */
    public List<OrderInfoVo> selectOrderInfoList(OrderInfoDto orderInfo);

    /**
     * 新增跟单信息
     *
     * @param orderInfo 跟单信息
     * @return 结果
     */
    public int insertOrderInfo(OrderInfo orderInfo);

    /**
     * 修改跟单信息
     *
     * @param orderInfo 跟单信息
     * @return 结果
     */
    public int updateOrderInfo(OrderInfo orderInfo);

    /**
     * 删除跟单信息
     *
     * @param id 跟单信息主键
     * @return 结果
     */
    public int deleteOrderInfoById(String id);

    /**
     * 批量删除跟单信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteOrderInfoByIds(String[] ids);

    List<HashMap<String, Object>>  countOrderByTimeRanges(OrderInfoDto orderInfoDto   );

    List<OrderInfoVo> queryOrderInfoByUserPhone1(OrderInfoDto orderInfoDto);

    int queryOrderCnt(@Param("businessUserPhone") String businessUserPhone,@Param("driverPhone")  String driverPhone,@Param("period")  String period);

    List<OrderInfoVo> queryOrderInfoByDriverPhone(OrderInfoDto orderInfoDto);

    List<HashMap<String, Object>> countOrderByDriver(OrderInfoDto orderInfoDto);


    public int insertOrderTrackInfo(OrderTrackInfo orderTrackInfo);

    List<OrderTrackInfo> queryOrderTrackInfoList(@Param("orderId")String orderId ,@Param("category")String category);


    boolean findOrderTrackInfoExist(@Param("id") String id);

    boolean validateVehicleOrderPermission(@Param("driverPhone")String driverPhone, @Param("plateNo")String plateNo);
}
